﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Twodi.Aspect.Interfaces;
using Twodi.Interfaces;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework;
using Twodi.Aspect.Implemented;
using Twodi.Behavior.Implemented;

namespace Twodi.Implemented
{
    /**
    public class ObjectComponent : Textured, IAccelerationAspect, ICollideableBoxAspect
    {
        public ObjectComponent(Texture2D texture, Game game)
            : base(texture, game)
        {
            this.AccelerationProperties = new AccelerationAspect();
            this.CollideableBoxProperties = new CollideableBoxAspect(this);
            this.AccelerationBehavior = new AccelerationBehavior(this);
        }

        public override void Update(GameTime gameTime)
        {
            if (this.AccelerationBehavior.Enabled) this.AccelerationBehavior.Update(gameTime);
            base.Update(gameTime);
        }

        /// <summary>
        /// Aceleração do componente.
        /// </summary>
        public Vector2 Acceleration
        {
            get
            {
                return this.AccelerationProperties.Acceleration;
            }
            set
            {
                this.AccelerationProperties.Acceleration = value;
            }
        }

        /// <summary>
        /// Velocidade do componente.
        /// </summary>
        public Vector2 Velocity
        {
            get
            {
                return this.AccelerationProperties.Velocity;
            }
            set
            {
                this.AccelerationProperties.Velocity = value;
            }
        }

        public Rectangle? MasterBox
        {
            get
            {
                return this.CollideableBoxProperties.MasterBox;
            }
            set
            {
                this.CollideableBoxProperties.MasterBox = value;
            }
        }

        public Rectangle[] CollisionBox
        {
            get
            {
                return this.CollideableBoxProperties.CollisionBox;
            }
            set
            {
                this.CollideableBoxProperties.CollisionBox = value;
            }
        }

        public IAcceleration AccelerationProperties
        {
            get;
            set;
        }

        public AccelerationBehavior AccelerationBehavior
        {
            get;
            set;
        }

        public ICollideableBox CollideableBoxProperties
        {
            get;
            set;
        }
    }
     **/
}
